#include "bsp_relay.h"
#include "stdio.h"

static void delay_ms(unsigned int ms)
{
    vTaskDelay(ms / portTICK_PERIOD_MS);
}
static void delay_us(unsigned int us)
{
    ets_delay_us(us);
}
static void delay_1ms(unsigned int ms)
{
    vTaskDelay(ms / portTICK_PERIOD_MS);
}
static void delay_1us(unsigned int us)
{
    ets_delay_us(us);
}
/******************************************************************
 * 函 数 名 称：relay_GPIO_Init
 * 函 数 说 明：继电器引脚初始化
 * 函 数 形 参：无
 * 函 数 返 回：无
 * 作       者：LC
 * 备       注：无
******************************************************************/
void Relay_GPIO_Init(void)
{
    gpio_config_t relay_config = {
        .pin_bit_mask = (1ULL << GPIO_RELAY_1) | (1ULL << GPIO_RELAY_2) | (1ULL << GPIO_RELAY_3) | (1ULL << GPIO_RELAY_4)
        | (1ULL << GPIO_RELAY_5) | (1ULL << GPIO_RELAY_6) | (1ULL << GPIO_RELAY_7) | (1ULL << GPIO_RELAY_8),  // 配置GPIO12、GPIO13、GPIO14、GPIO25、GPIO26、GPIO27、GPIO32、GPIO33引脚
        .mode = GPIO_MODE_OUTPUT,                                        // 输出模式
        .pull_up_en = GPIO_PULLUP_DISABLE,                                // 上拉禁用
        .pull_down_en = GPIO_PULLDOWN_DISABLE,                           // 下拉禁用
        .intr_type = GPIO_INTR_DISABLE                                    // 不使能中断
    };
    gpio_config(&relay_config);
}


/******************************************************************
 * 函 数 名 称：Set_Relay_Switch
 * 函 数 说 明：设置继电器状态
 * 函 数 形 参：0继电器吸合   1继电器断开
 * 函 数 返 回：
 * 作       者：LC
 * 备       注：
******************************************************************/
void Set_Relay_Switch(unsigned char relay, unsigned char state)
{
    if (relay == 0) {
        RELAY_1_OUT(state); // 控制继电器1
    } else if (relay == 1) {
        RELAY_2_OUT(state); // 控制继电器2
    } else if (relay == 2) {
        RELAY_3_OUT(state); // 控制继电器2
    }else if (relay == 3) {
        RELAY_4_OUT(state); // 控制继电器4
    }else if (relay == 4) {
        RELAY_5_OUT(state); // 控制继电器5
    }else if (relay == 5) {
        RELAY_6_OUT(state); // 控制继电器6
    }else if (relay == 6) {
        RELAY_7_OUT(state); // 控制继电器7
    }else if (relay == 7) { // 控制继电器8
        RELAY_8_OUT(state);
    }
}
